// 全局变量：记录当前频道、筛选状态和所有筛选参数
let currentChannel = 'female'; // 默认女频
let currentSort = 5; // 默认排序：更新时间
// 存储所有筛选条件的当前值
let filterParams = {
    category: 0,
    words: 0,
    free: 0,
    finish: 0,
    updateDateType: 0
};
let pageParams = {
    pageNo: 1,       // 当前页码
    pageSize: 20,    // 每页条
    totalCount: 0    // 总数据量
};
// 跳转详情页
function jumps(id){
    if(sessionStorage.getItem('account')){
             window.location.href=`./yy-bookDetail.html?id=${id}`;
        }else{
              window.location.href='./login.html';
        }
    console.log(id)
}
// 下拉菜单控制
function getapp(event) {
    event.stopPropagation();
    const popRank = event.currentTarget;
    popRank.classList.toggle('show');
}

document.addEventListener('click', function () {
    const popRank = document.querySelector('.popRank');
    if (popRank) popRank.classList.remove('show');
});

function generateOptions(container, items, type = '') {
    container.innerHTML = '';
    items.forEach((item, index) => {
        // 确定是否为选中状态
        const isActive = type === 'channel'
            ? (index === 0 && currentChannel === 'female') || (index === 1 && currentChannel === 'male')
            : filterParams[type] === index;

        const activeClass = isActive ? ' curr' : '';
        const activeColor = isActive ? ' style="color: #b388ff"' : '';

        container.innerHTML += `
        <div class="selectTag${activeClass}">
            <p class="boy" onclick="getchange(${index}, '${type}')" href=""${activeColor}>${item}</p>
        </div>
        `;
    });
}

// 频道数据定义
const arr1 = ['女频', '男频'];
const channelFilters = {
    female: {
        category: ['全部', '古代言情', '现代言情', '幻想言情', '出版影视', '科幻游戏', '短篇小说'],
        words: ['全部', '30万字以下', '30-50万字', '50-100万字', '100-200万字', '200万字以上'],
        free: ['全部', '免费', '收费'],
        finish: ['全部', '完本', '连载'],
        updateDateType: ['全部', '三日内', '七日内', '半月内', '一月内'],
        categoryId: 20 // 女频后端ID
    },
    male: {
        category: ['全部', '玄幻奇幻', '都市异能', '历史军事', '游戏竞技', '科幻末世', '悬疑推理'],
        words: ['全部', '30万字以下', '30-50万字', '50-100万字', '100-200万字', '200万字以上'],
        free: ['全部', '免费', '收费'],
        finish: ['全部', '完本', '连载'],
        updateDateType: ['全部', '三日内', '七日内', '半月内', '一月内'],
        categoryId: 370 // 男频后端ID
    }
};
const filterParamMap = {
    category: {
        female: [0, 131, 132, 134, 135, 136, 556], 
        male: [0, 372, 376, 378, 380, 382, 384, 386, 388, 390, 392, 404] 
    },
    words: [0, 1, 2, 3, 4, 5], 
    free: [0, true, false], 
    finish: [0, true, false], 
    updateDateType: [0, 3, 7, 15, 30] 
};

// 初始化所有筛选列表
function initAllFilters(channel = 'female') {
    // 频道列表
    const selectlist1 = document.querySelector('.selectlist1');
    generateOptions(selectlist1, arr1, 'channel');

    // 根据当前频道生成对应筛选列表
    const filters = channelFilters[channel];
    generateOptions(document.querySelector('.selectlist2'), filters.category, 'category');
    generateOptions(document.querySelector('.selectlist3'), filters.words, 'words');
    generateOptions(document.querySelector('.selectlist4'), filters.free, 'free');
    generateOptions(document.querySelector('.selectlist5'), filters.finish, 'finish');
    generateOptions(document.querySelector('.selectlist6'), filters.updateDateType, 'updateDateType');
}

// 初始化页面筛选列表
initAllFilters();

// 推荐排序标签
const arr7 = ['更新时间', '推荐票', '字数'];
const tabitem = document.querySelector('.tab-item');
arr7.forEach((item, index) => {
    const isFirst = index === 0 ? ' on' : '';
    tabitem.innerHTML += `
        <p class="boy${isFirst}" onclick="getitems(event)" data-sort="${index === 0 ? 5 : index === 1 ? 4 : 6}" href="">${item}</p>
    `;
});

// 人气排序标签
const arr8 = ['总人气', '周人气', '月人气'];
const onapp = document.querySelector('.onapp');
arr8.forEach((item, index) => {
    const isFirst = index === 0 ? ' on' : '';
    onapp.innerHTML += `
        <p class="${isFirst}" onclick="getitems1(event)" data-sort="${index === 0 ? 3 : index === 1 ? 1 : 2}" href="">${item}</p>
    `;
});

const tabContent = document.querySelector('.tab-content');
const firstname = document.querySelector('.firstname');
firstname.innerHTML = '总人气';

// 获取书籍列表数据（带筛选参数）
function getlist(targetPage) {
      pageParams.pageNo = targetPage || pageParams.pageNo;
    // 显示加载状态
    tabContent.innerHTML = '<div class="loading">加载中...</div>';

    let finalCategoryId;
    if (filterParams.category > 0) {
        // 有选中子分类时，直接使用子分类ID替换主分类ID
        finalCategoryId = filterParamMap.category[currentChannel][filterParams.category];
    } else {
        // 没有选中子分类时，使用当前频道的主分类ID
        finalCategoryId = channelFilters[currentChannel].categoryId;
    }

    const params = new URLSearchParams({
         pageNo: pageParams.pageNo,    
        pageSize: 20,
        categoryId: finalCategoryId, // 使用最终确定的分类ID
        sort: currentSort
    });

    // 添加字数筛选参数
    if (filterParams.words > 0) {
        params.append('words', filterParamMap.words[filterParams.words]);
    }

    // 添加属性筛选参数
    if (filterParams.free > 0) {
        params.append('free', filterParamMap.free[filterParams.free]);
    }

    // 添加状态筛选参数
    if (filterParams.finish > 0) {
        params.append('finish', filterParamMap.finish[filterParams.finish]);
    }

    // 添加更新时间筛选参数
    if (filterParams.updateDateType > 0) {
        params.append('updateDateType', filterParamMap.updateDateType[filterParams.updateDateType]);
    }

    // 发送请求
    fetch(`https://app2.motie.com/pc/books/search?${params.toString()}`, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(Object.fromEntries(params))
    })
        .then(res => {
            if (!res.ok) throw new Error('网络请求失败');
            return res.json();
        })
        .then(res1 => {
             pageParams.totalCount = res1.data.paginate.totalItemsCount || 0;
            // 更新书籍总数
            const tabnum = document.querySelector('.tab-num');
            tabnum.textContent = `共${res1.data.paginate.totalItemsCount}本作品`;

            tabContent.innerHTML = '';
            res1.data.items.forEach((item) => {
                const time = new Date(item.lastChapterTime);
                // 格式化时间，确保两位数显示
                const formatNum = num => num.toString().padStart(2, '0');
                const updateTime = `${time.getFullYear()}-${formatNum(time.getMonth() + 1)}-${formatNum(time.getDate())} ${formatNum(time.getHours())}:${formatNum(time.getMinutes())}`;

                tabContent.innerHTML += `
            <div class="firsts">
                <div class="firstleft">
                    <a href="./yy-bookDetail.html?id=${item.bookId}">
                        <img src="${item.bookIconUrl}" alt="${item.bookName}">
                    </a>
                </div>
                <div class="firstright">
                    <a class="bookname" href="./yy-bookDetail.html?id=${item.bookId}">${item.bookName}</a>
                    <p>
                        <a href="./yy-bookDetail.html?id=${item.bookId}">${item.authorName}</a>|
                        <a href="./yy-bookDetail.html?id=${item.bookId}">${item.categoryVO ? item.categoryVO.name : '未知分类'}</a>|
                        ${item.finish ? '已完结' : '连载中'}
                    </p>
                    <p class="bigbookinfo">${item.introduction}</p>
                    <p>
                        <span>${item.words}字 | </span>
                        <span class="red">${updateTime}更新</span>
                    </p>
                </div>
            </div>
            `;
            });
              renderLaypage();
        })
        .catch(err => {
            console.error('加载失败:', err);
            tabContent.innerHTML = '<div class="error">加载失败，请重试</div>';
        });
}

// 初始加载数据
getlist(1);

// 推荐排序点击事件
function getitems(event) {
    event.preventDefault();
    // 移除所有高亮
    document.querySelectorAll('.tab-item p.boy').forEach(el => el.classList.remove('on'));
    // 添加当前高亮
    event.target.classList.add('on');
    // 获取排序参数并加载数据
    currentSort = parseInt(event.target.getAttribute('data-sort'));
    getlist();
}

// 人气排序点击事件
function getitems1(event) {
    event.preventDefault();
    // 移除所有高亮
    document.querySelectorAll('.onapp p').forEach(el => el.classList.remove('on'));
    // 添加当前高亮
    event.target.classList.add('on');
    // 更新显示文本
    firstname.innerHTML = event.target.innerHTML;
    firstname.classList.add('on');
    // 获取排序参数并加载数据
    currentSort = parseInt(event.target.getAttribute('data-sort'));
    getlist();
}

// 筛选条件点击事件（核心：处理所有筛选条件变更）
function getchange(index, type) {
    // 处理频道切换
    if (type === 'channel') {
        currentChannel = index === 0 ? 'female' : 'male';
        // 重置筛选条件
        filterParams = {
            category: 0,
            words: 0,
            free: 0,
            finish: 0,
            updateDateType: 0
        };
         pageParams.pageNo = 1; // 重置页码为1
        initAllFilters(currentChannel);
        getlist(1); // 加载第一页数据
        return;
    }

    // 处理其他筛选条件
    if (Object.keys(filterParams).includes(type)) {
        // 更新筛选参数
        filterParams[type] = index;
 pageParams.pageNo = 1; // 筛选条件变更后，默认显示第一页
        // 更新UI高亮状态
        const listNumber = type === 'category' ? 2 :
            type === 'words' ? 3 :
            type === 'free' ? 4 :
            type === 'finish' ? 5 : 6;

        const selectLists = document.querySelectorAll(`.selectlist${listNumber} .selectTag`);
        selectLists.forEach((item, i) => {
            const pTag = item.querySelector('p');
            if (i === index) {
                item.classList.add('curr');
                pTag.style.color = '#b388ff';
            } else {
                item.classList.remove('curr');
                pTag.style.color = '#333';
            }
        });

        // 重新加载数据
        getlist(1);
    }
}
